package utils

import (
	"fmt"
	"io"
	"log/slog"
	"strings"
)

// SlogLevel 将 str 类型的 level(debug/info/error) 转为 slog.Level
type SlogLevel string

func (l SlogLevel) Level() slog.Level {
	switch strings.ToLower(string(l)) {
	case "debug":
		return slog.LevelDebug
	case "info":
		return slog.LevelInfo
	case "warn":
		return slog.LevelWarn
	case "error":
		return slog.LevelError
	default:
		return slog.LevelInfo
	}
}

// Close 忽略掉 close 错误（尤其在 defer 语句里）
func Close(c io.Closer) {
	if err := c.Close(); err != nil {
		fmt.Println("close err", err)
	}
}
